<?php
/**
 * Clase que gestiona las comentarios
 */
class Comentario{
	/**
	 * Clase para la conexión a la BBDD
	 * @var Object
	 */
	private $MySQL;
	
	/**
	 * Identificador
	 * @var integer
	 */
	private $id;
	
	/**
	 * Identificador del usuario
	 * @var integer
	 */
	private $id_usuario;

        /**
	 * Identificador de la cancion
	 * @var integer
	 */
	private $id_cancion;

        /**
         * Texto del comentario
         * @var <string>
         */
	private $comentario;

        /**
         * Indica si el comentario está borrado
         * @var <bool>
         */
        private $borrado;
	/*
	 * Métodos de la Clase.
	 ***********************/	

	/**
	 * Constructor
	 * 
	 * Si recibe un identificador válido, se carga la canción de la BBDD mediante el método {@link cargar()}, en caso contrario crea un objeto
	 * vacío.
	 * @see cargar()
	 * 
	 * @param integer $id
	 */
	public function __construct($id_comentario=null){
		$Validar = new Validar();
		$this->MySQL = new MySQL('MYLIED');
		
		if($Validar->id($id_comentario)){
			$this->id = $id_comentario;
			$this->cargar();
		}
	}

	/**
	 * Carga todos los datos para el comentario en la BBDD.
	 * 
	 * Este método es invocado cuando se le pasa un id de Comentario válido al constructor, y a partir
	 * de éste se cargan todos sus datos de la BBDD.
	 */
	private function cargar(){
		try{
			if($this->id){
				$query_comentario = "SELECT *
									FROM comentarios
									WHERE id = '$this->id'; ";
				if(!($result = $this->MySQL->query($query_comentario)))
					throw new Exception("Error al cargar la canci&oacute;n");
				else if(mysql_num_rows($result) == 0)
					throw new Exception("La informaci&oacute;n de la canci&oacute;n no est&aacute; disponible.");
					
				$row = mysql_fetch_array($result);
	
				$this->id_usuario = $row['fk_usuario'];
				$this->id_cancion = $row['fk_cancion'];
				$this->comentario = $row['comentario'];
				$this->borrado    = $row['borrado'];
				
			}
		}catch(Exception $e){}
	}	
	
	/**
	 * Devuelve el id del comentario
	 * 
	 * @return integer $id Id de la canci&oacute;n.
	 */
	public function get_Id(){
		return $this->id;
	}
	
	/**
	 * Devuelve el id del usuario
	 * 
	 * @return integer
	 */
	public function get_Id_Usuario(){
		return $this->id_usuario;
	}

        /**
	 * Devuelve el id de la canción
	 *
	 * @return integer
	 */
	public function get_Id_Cancion(){
		return $this->id_cancion;
	}

        /**
         * Devuelve el texto del comentario
         * @return <string>
         */
	public function get_Comentario(){
		return $this->comentario;
	}
        /**
         * Indica si el comentario está borrado
         * @return <bool>
         */
	public function get_Borrado(){
		return $this->borrado;
	}

	/**
	 * Borra el comentario de la BBDD
	 */
	public function del_Comentario(){
		$query = "UPDATE comentarios SET borrado='1' WHERE id='$this->id'";
		$this->MySQL->query($query);
	}
	
	public function crear($datos){
			
		//Comprobando los datos "imprescindibles":
		$errores = '';
		if($datos['id_cancion'] == '' || ! isset($datos['id_cancion']))
			$errores .= "La canci&oacute;n es obligatoria.";

                if($datos['id_usuario'] == '' || ! isset($datos['id_usuario']))
			$errores .= "El usuario es obligatorio.";

                if($datos['comentario'] == '' || ! isset($datos['comentario']))
			$errores .= "El comentario es obligatorio.";
			
		if($errores != '') {
			throw new Exception($errores);
		}

		//Si todo ha ido bien:
                $this->id_usuario = $datos['id_usuario'];
		$this->id_cancion = $datos['id_cancion'];
                $this->comentario = mysql_real_escape_string(htmlentities($datos['comentario']));
		
		$this->guardar();
		
		return $this->id;
	}
	
	/**
	 * Guarda en la BBDD los datos del comentario
	 */
	private function guardar(){
		$campos = "";
		$valores = "";
		
                $query = "INSERT INTO comentarios
                                        (fk_usuario, fk_cancion, comentario, borrado)
                                        VALUES (
                                                '$this->id_usuario',
                                                '$this->id_cancion',
                                                '$this->comentario',
                                                '0'
                                                );";
		if(!$this->MySQL->query($query))
			throw new Exception("Error al crear el comentario");

                $this->id = mysql_insert_id();

                $query = "INSERT INTO comentarios_leidos_usuarios (fk_usuario, fk_comentario)
                                                                VALUES ('$this->id_usuario','$this->id')";

                
                if(!$this->MySQL->query($query))
			throw new Exception("Error al marcar el comentario insertado como le&iacute;do");
									
		
	}
		
}
?>